package com.zerdoor.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Created by xiaoji on 2014/11/7.
 */
public interface UserCenterService {

    /**
     * FunName:           getUserReceiverTaskInfo
     * Description :      会员近期投标任务
     * @param userId 会员ID
     * @return String：   会员竞标信息
     * @Author:       xiaoji
     * @Create Date: 2014-11-7
     */
    public List<Map<String, Object>> getUserReceiverTaskInfo(Integer userId);

    /**
     * FunName:           getUserSenderTaskInfo
     * Description :      会员近期招标任务
     * @param userId 会员ID
     * @return String：   会员竞标信息
     * @Author:       xiaoji
     * @Create Date: 2014-11-7
     */
    public List<Map<String, Object>> getUserSenderTaskInfo(Integer userId);

    /**
     * FunName:           getArtArticleFornews
     * Description :      官方新闻
     * @return String：   会员竞标信息
     * @Author:       xiaoji
     * @Create Date: 2014-11-7
     */
    public List<Map<String, Object>> getArtArticleFornews();

    /**
     * FunName:           getUserIncome
     * Description :      会员收入
     * @param userId 会员ID
     * @return String：   会员收入
     * @Author:       xiaoji
     * @Create Date: 2014-11-7
     */
    public BigDecimal getUserIncome(Integer userId);

    /**
     * FunName:           getUserPayout
     * Description :      会员支出
     * @param userId 会员ID
     * @return String：   会员支出
     * @Author:       xiaoji
     * @Create Date: 2014-11-7
     */
    public BigDecimal getUserPayout(Integer userId);

    /**
     * FunName:           getUserWallet
     * Description :      会员余额
     * @param userId 会员ID
     * @return String：   会员余额
     * @Author:       xiaoji
     * @Create Date: 2014-11-7
     */
    public BigDecimal getUserWallet(Integer userId);

    /**
     * FunName:           getArtistGoingTasks
     * Description :      会员中心-艺术家-正在进行中的项目
     * @param userId 会员ID
     * @return String：   项目
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getArtistGoingTasks(Integer userId);

    /**
     * FunName:           getArtistReceiverTasks
     * Description :      会员中心-艺术家-投标项目
     * @param userId 会员ID
     * @return String：   项目
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getArtistReceiverTasks(Integer userId);

    /**
     * FunName:           getArtistHistoryTasks
     * Description :      会员中心-艺术家-历史参与项目
     * @param userId 会员ID
     * @return String：   项目
     * @Author:       xiaoji
     * @Create Date: 2014-12-3
     */
    public List<Map<String, Object>> getArtistHistoryTasks(Integer userId);

    /**
     * FunName:           getArtistProOrder
     * Description :      会员中心-艺术家-作品出售订单
     * @param userId 会员ID
     * @return String：   作品出售订单
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getArtistProOrder(Integer userId);

    /**
     * FunName:           getArtistProByPhotoId
     * Description :      会员中心-艺术家-相册集作品管理
     * @param map 会员ID:userId;相册集ID:photoId
     * @return String：   相册集作品
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getArtistProByPhotoId(Map<String, Object> map);

    /**
     * FunName:           addArtistPro
     * Description :      会员中心-艺术家-作品管理-作品添加
     * @param map 作品信息
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public void addArtistPro(Map<String, Object> map);

    /**
     * FunName:           updateArtistPro
     * Description :      会员中心-艺术家-作品管理-作品修改
     * @param map 作品信息
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public void updateArtistPro(Map<String, Object> map) throws Exception;

    /**
     * FunName:           initUpdateArtistPro
     * Description :      会员中心-艺术家-作品管理-作品修改初始化
     * @param map 用户ID；作品ID
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public Map<String, Object> initUpdateArtistPro(Map<String, Object> map);

    /**
     * FunName:           deletePro
     * Description :      会员中心-艺术家-作品管理-作品删除
     * @param map 用户ID；作品ID
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-13
     */
    public void deletePro(Map<String, Object> map) throws Exception;

    /**
     * FunName:           getArtistPhotoes
     * Description :      会员中心-艺术家-作品管理-专辑列表
     * @param userId 会员ID
     * @return String：   相册
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getArtistPhotoes(Integer userId);

    /**
     * FunName:           addPhoto
     * Description :      会员中心-艺术家-作品管理-专辑添加
     * @param map 专辑信息
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public void addPhoto(Map<String, Object> map);

    /**
     * FunName:           updatePhoto
     * Description :      会员中心-艺术家-作品管理-专辑修改
     * @param map 专辑信息
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public void updatePhoto(Map<String, Object> map);

    /**
     * FunName:           deletePhoto
     * Description :      会员中心-艺术家-作品管理-专辑删除
     * @param map 专辑ID;会员ID
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public void deletePhoto(Map<String, Object> map) throws Exception;
    /**
     * FunName:           getArtistInfo
     * Description :      会员中心-艺术家-介绍资料
     * @param artistId 艺术家ID
     * @return String：   艺术家介绍
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public Map<String, Object> getArtistInfo(Integer artistId);

    /**
     * 获取艺术家技能
     * @return
     */
    public List<Map<String, Object>> getArtistSkill();

    /**
     * FunName:           getSecondBaseTasktype
     * Description :      会员中心-艺术家-服务范围
     * @return String：   服务范围
     * @Author:       xiaoji
     * @Create Date: 2014-12-5
     */
    public List<Map<String, Object>> getSecondBaseTasktype();

    /**
     * FunName:           updateUserArtist
     * Description :      会员中心-艺术家-修改艺术家资料
     * @return String：   艺术家介绍
     * @Author:       xiaoji
     * @Create Date: 2014-12-5
     */
    public void updateUserArtist(Map<String, Object> map) throws Exception;

    /**
     * FunName:           updateArtisInfo
     * Description :      会员中心-艺术家-更新介绍资料
     * @param map 艺术家信息
     * @return String：
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public void updateArtisInfo(Map<String, Object> map);

    /**
     * FunName:           getPrincipalBidTasks
     * Description :      会员中心-委托方-招标中的项目
     * @param userId 会员ID
     * @return String：招标中的项目
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getPrincipalBidTasks(Integer userId);

    /**
     * FunName:           getPrincipalGoingTasks
     * Description :      会员中心-委托方-进行中的任务
     * @param userId 会员ID
     * @return String：进行中的任务
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getPrincipalGoingTasks(Integer userId);

    /**
     * FunName:           getPrincipalHistoryBidTasks
     * Description :      会员中心-委托方-历史参与项目
     * @param userId 会员ID
     * @return String：历史参与项目
     * @Author:       xiaoji
     * @Create Date: 2014-12-25
     */
    public List<Map<String, Object>> getPrincipalHistoryBidTasks(Integer userId);

    /**
     * FunName:           getSingleUserInfoByUserId
     * Description :      会员中心-账户信息
     * @param userId 会员ID
     * @return String：账户信息
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public Map<String, Object> getSingleUserInfoByUserId(Integer userId);

    /**
     * FunName:           getPayInfo
     * Description :      会员中心-账户充值信息
     * @param userId 会员ID
     * @return String：账户充值信息
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getPayInfo(Integer userId);

    /**
     * FunName:           getPayOutInfo
     * Description :      会员中心-账户提现信息
     * @param userId 会员ID
     * @return String：账户提现信息
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getPayOutInfo(Integer userId);

    /**
     * FunName:           getPayOutInfo
     * Description :      会员中心-站内消息
     * @param userId 会员ID
     * @return String：站内消息
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getMessagesById(Integer userId);

    /**
     * FunName:           getPayOutInfo
     * Description :      会员中心-站内消息房间
     * @param map 会员ID;接收方
     * @return String：站内消息房间
     * @Author:       xiaoji
     * @Create Date: 2014-11-11
     */
    public List<Map<String, Object>> getMessagesByReceiver(Map<String, Object> map);

    /**
     * FunName:           getTotalMessages
     * Description :      会员中心-站内信未读总消息数
     * @param userId 会员ID;
     * @return String：会员未读消息总数
     * @Author:       xiaoji
     * @Create Date: 2014-12-15
     */
    public int getTotalMessages(Integer userId);


    /**
     * FunName:           addUserMessage
     * Description :      会员中心-添加站内信
     * @param map 站内信信息
     * @Author:       xiaoji
     * @Create Date: 2014-12-15
     */
    public void addUserMessage(Map<String,Object> map) throws Exception;

    /**
     * FunName:           updateUserMessageRead
     * Description :      会员中心-更改站内信状态
     * @param map 会员ID;发送者
     * @Author:       xiaoji
     * @Create Date: 2014-12-15
     */
    public int updateUserMessageRead(Map<String,Object> map) throws Exception;

    /**
     * FunName:           getUserBaileInfo
     * Description :      会员中心-委托方-获取委托方信息
     * @param baileId 会员编号
     * @Author:       xiaoji
     * @Create Date: 2014-12-25
     */
    public Map<String, Object> getUserBaileInfo(int baileId);

    /**
     * FunName:           updateUserMessageRead
     * Description :      会员中心-更改站内信状态
     * @param map 会员ID;发送者
     * @Author:       xiaoji
     * @Create Date: 2014-12-25
     */
    public void updateUserBaileInfo(Map<String, Object> map) throws Exception;

    /**
     * 会员中心-收藏商品
     * @param userId 会员编号
     * @return 商品
     */
    public List<Map<String, Object>> colloctionProction(int userId);

    /**
     * 会员中心-收藏艺术家
     * @param userId 会员编号
     * @return 艺术家
     */
    public List<Map<String, Object>> colloctionArtist(int userId);

    /**
     * 会员中心-收藏委托方
     * @param userId 会员编号
     * @return 委托方
     */
    public List<Map<String, Object>> colloctionBaile(int userId);

    /**
     * 会员中心-收藏项目
     * @param userId 会员编号
     * @return 项目
     */
    public List<Map<String, Object>> colloctionProject(int userId);

    /**
     * 删除收藏夹
     * @param favoriteId 收藏ID
     * @param userId 会员编号
     * @throws Exception 删除收藏不成功抛出异常
     */
    public void deleteColloction(int favoriteId,int userId)throws Exception;

    /**
     * 修改会员密码
     * @param map 会员号userId；密码psd
     * @throws Exception
     */
    public void updatePassword(Map<String,Object> map)throws Exception;

    /**
     * 修改头像
     * @param map
     * @throws Exception
     */
    public void updateUserHeadPortrait(Map<String,Object> map)throws Exception;

    /**
     * 认证真实姓名
     * @param map
     * @throws Exception
     */
    public void updateUserRealName(Map<String,Object> map)throws Exception;

    /**
     * 邮箱认证
     * @param map
     * @throws Exception
     */
    public void updateUserEmail(Map<String,Object> map)throws Exception;

    /**
     * 手机号码修改
     * @param map
     * @throws Exception
     */
    public void updateUserPhone(Map<String,Object> map)throws Exception;

    /**
     * 填充qq号码
     * @param map
     * @throws Exception
     */
    public void updateUserqq(Map<String,Object> map)throws Exception;

    /**
     * 用户中心验证手机号码
     * @param map
     * @return
     */
    public int checkUserPhone(Map<String,Object> map);

    /**
     * 用户中心验证邮箱账号
     * @param map
     * @return
     */
    public int checkUserEmail(Map<String,Object> map);

    /**
     * 获取用户推荐者数目
     * @param userId 用户编号
     * @return
     */
    public Map<String, Object> getTotalPresenter(int userId);

    /**
     * 认证支付宝
     * @param map
     * @return
     */
    public void updateAlipay(Map<String, Object> map)throws Exception;

    /**
     * 申请提现记录
     * @param userId 用户编号
     * @param payOutPrice 提现金额
     * @return 冻结金额
     * @throws Exception
     */
    public BigDecimal addUserWithdraw(int userId,BigDecimal payOutPrice) throws Exception;
}
